﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Data;
using System.Configuration;
using System.Web.Security;
using System.Web.UI.WebControls.WebParts;
namespace CityGames
{
    public partial class SiteMaster : System.Web.UI.MasterPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Session["usuario"] == null)     //esto se ejecuta la primera vez sin usuario logado ni cookies
                {
                    //si entra por primera vez pero hay cookies entonces muestro el panel de usuario logado, sino pongo el login
                    if (Request.Cookies["userID"] != null)
                    {
                        string dniUsuario = Request.Cookies["userID"].Value;
                    
                        Socio enSocio = new Socio();
                        enSocio.Dni = dniUsuario;

                        Empleado enEmpleado = new Empleado();
                        enEmpleado.Dni = dniUsuario;

                        if (enSocio.ExisteSocioWeb())
                        {
                            string nombreApellido = enSocio.ObtenerNombreSocio(dniUsuario);
                            lbWelcome.Text = "Bievenido " + nombreApellido + "!";
                            lbWelcome.ForeColor = System.Drawing.Color.Black;
                            lbWelcome.CssClass = "LabelWelcome";
                            lbWelcome.Visible = true;

                            Session["usuario"] = enSocio.Dni;
                            Session["tipoUsuario"] = "Socio";

                            pLogin.Visible = false;
                            ibtUsuarioLogado.Visible = true;

                            pCrearNoticia.Visible = false;
                            ibtCrearNoticia.Visible = false;
                            lbtCrearNoticia.Visible = false;
                            pUsuarioLogado.Visible = true;                           
                        }
                        else if (enEmpleado.ExisteEmpleadoParaWeb())
                        {
                            string tipoUsuario = enEmpleado.ObtenerTipoEmpleado();
                            if ((string)tipoUsuario == "AdministradorWeb")
                            {
                                Session["usuario"] = enEmpleado.Dni;
                                Session["tipoUsuario"] = tipoUsuario;
                                pLogin.Visible = false;
                                ibtUsuarioLogado.Visible = true;
                                pPerfil.Visible = false;
                                ibtPerfil.Visible = false;
                                lbtPerfil.Visible = false;

                                pEditarPerfil.Visible = false;
                                ibtEditarPerfil.Visible = false;
                                lbtEditarPerfil.Visible = false;
                                
                                ibtCrearNoticia.Visible = true;
                                lbtCrearNoticia.Visible = true;
                                pUsuarioLogado.Visible = true;
                            }
                            else if ((string)tipoUsuario == "Moderador")
                            {
                                Session["usuario"] = enEmpleado.Dni;
                                Session["tipoUsuario"] = tipoUsuario;
                                pLogin.Visible = false;

                                pPerfil.Visible = false;
                                ibtPerfil.Visible = false;
                                lbtPerfil.Visible = false;

                                pEditarPerfil.Visible = false;
                                ibtEditarPerfil.Visible = false;
                                lbtEditarPerfil.Visible = false;

                                ibtUsuarioLogado.Visible = true;
                                ibtCrearNoticia.Visible = false;
                                lbtCrearNoticia.Visible = false;
                                pUsuarioLogado.Visible = true;
                            }
                        }

                        if (Session["usuario"] != null)
                            ActualizarCarro();

                    }
                    else
                    {
                        pLogin.Visible = true;
                        ibtUsuarioLogado.Visible = false;
                        pUsuarioLogado.Visible = false;
                    }
                }
                else
                {
                    if ((string)Session["tipoUsuario"] == "Socio")  //Aqui entra cuando por ejemplo muestro comentarios desde el menu de opciones
                    {
                        Socio enSocio = new Socio();
                        string dniUsuario = Session["usuario"].ToString();
                        string nombreApellido = enSocio.ObtenerNombreSocio(dniUsuario);
                        lbWelcome.Text = "Bievenido " + nombreApellido + "!";
                        lbWelcome.ForeColor = System.Drawing.Color.Black;
                        lbWelcome.Visible = true;

                        pLogin.Visible = false;
                        ibtUsuarioLogado.Visible = true;
                        ibtCrearNoticia.Visible = false;
                        lbtCrearNoticia.Visible = false;
                        pUsuarioLogado.Visible = true;
                    }
                    else if ((string)Session["tipoUsuario"] == "Moderador")
                    {
                        pPerfil.Visible = false;
                        ibtPerfil.Visible = false;
                        lbtPerfil.Visible = false;

                        pEditarPerfil.Visible = false;
                        ibtEditarPerfil.Visible = false;
                        lbtEditarPerfil.Visible = false;

                        pLogin.Visible = false;
                        ibtUsuarioLogado.Visible = true;
                        ibtCrearNoticia.Visible = false;
                        lbtCrearNoticia.Visible = false;
                        pUsuarioLogado.Visible = true;
                    }
                    else if ((string)Session["tipoUsuario"] == "AdministradorWeb")
                    {
                        pPerfil.Visible = false;
                        ibtPerfil.Visible = false;
                        lbtPerfil.Visible = false;

                        pEditarPerfil.Visible = false;
                        ibtEditarPerfil.Visible = false;
                        lbtEditarPerfil.Visible = false;

                        pLogin.Visible = false;
                        ibtUsuarioLogado.Visible = true;
                        ibtCrearNoticia.Visible = true;
                        lbtCrearNoticia.Visible = true;
                        pUsuarioLogado.Visible = true;
                    }
                }
            }
        }

        protected override void OnPreRender(EventArgs e)
        {
            base.OnPreRender(e);

            try
            {
                if ((string)Session["tipoUsuario"] == "Socio")
                {
                    Socio enSocio = new Socio();
                    string dniUsuario = Session["usuario"].ToString();
                    string nombreApellido = enSocio.ObtenerNombreSocio(dniUsuario);
                    lbWelcome.Text = "Bievenido " + nombreApellido + "!";
                    lbWelcome.ForeColor = System.Drawing.Color.Black;  
                    lbWelcome.Visible = true;

                    pLogin.Visible = false; //panel de login oculto

                    ibtUsuarioLogado.Visible = true;
                    pPerfil.Visible = true;
                    ibtPerfil.Visible = true;
                    lbtPerfil.Visible = true;

                    pEditarPerfil.Visible = true;
                    ibtEditarPerfil.Visible = true;
                    lbtEditarPerfil.Visible = true;

                    pCrearNoticia.Visible = false;
                    ibtCrearNoticia.Visible = false;
                    lbtCrearNoticia.Visible = false;
                    
                    pUsuarioLogado.Visible = true;
                }
                else if ((string)Session["tipoUsuario"] == "AdministradorWeb")
                {
                    pPerfil.Visible = false;
                    ibtPerfil.Visible = false;
                    lbtPerfil.Visible = false;

                    pEditarPerfil.Visible = false;
                    ibtEditarPerfil.Visible = false;
                    lbtEditarPerfil.Visible = false;

                    pLogin.Visible = false;
                    ibtUsuarioLogado.Visible = true;
                    pCrearNoticia.Visible = true;
                    ibtCrearNoticia.Visible = true;
                    lbtCrearNoticia.Visible = true;
                    pUsuarioLogado.Visible = true;
                }
                else if ((string)Session["tipoUsuario"] == "Moderador")
                {
                    pPerfil.Visible = false;
                    ibtPerfil.Visible = false;
                    lbtPerfil.Visible = false;

                    pEditarPerfil.Visible = false;
                    ibtEditarPerfil.Visible = false;
                    lbtEditarPerfil.Visible = false;

                    pLogin.Visible = false;
                    ibtUsuarioLogado.Visible = true;
                    pCrearNoticia.Visible = false;
                    ibtCrearNoticia.Visible = false;
                    lbtCrearNoticia.Visible = false;
                    pUsuarioLogado.Visible = true;
                }

                if (Request.RawUrl != "/Carro1.aspx" && Request.RawUrl != "/Carro3.aspx")
                    CargarCarro();
            }
            catch (Exception ex)
            {
                MyMessageBoxInfo.Show(MyMessageBox.MessageType.Error, ex.ToString(), "ERROR", 200, 600);
            }
        }

        protected void btIniciaSesion_Click(object sender, EventArgs e)
        {
            try
            {
                if (Session["usuario"] == null)
                {
                    //Session.Clear();

                    if (tbPassword.Text != "" && tbUsuario.Text != "")
                    {
                        string dniUsuario = tbUsuario.Text;
                        string passUsuario = tbPassword.Text;

                        Logarse(dniUsuario, passUsuario);
                        if(Session["usuario"] != null)
                            ActualizarCarro();

                        if ((Session["usuario"] != null) && (chbRecuerdame.Checked == true))
                        {

                            CrearCookie();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MyMessageBoxInfo.Show(MyMessageBox.MessageType.Error, ex.ToString(), "Error", 125, 300);
            }
        }

        public void Logarse(string dniUsuario, string passUsuario)
        {
            try
            {
                bool ok = false;
                Socio enSocio = new Socio();            //Para ver si es socio
                enSocio.Dni = dniUsuario;

                Empleado enEmpleado = new Empleado();   //Para ver si es empleado
                enEmpleado.Dni = dniUsuario;

                string passSocio = enSocio.GetPasswordSocio();
                string passEmpleado = enEmpleado.getPassword();

                if (passSocio == passUsuario)
                {
                    ok = true;
                    Session["usuario"] = enSocio.Dni;
                    Session["tipoUsuario"] = "Socio";
                }
                else if (passEmpleado == passUsuario)
                {
                    string tipoUsuario = enEmpleado.ObtenerTipoEmpleado();
                    ok = true;

                    if (tipoUsuario == "AdministradorWeb")
                    {
                        Session["usuario"] = enEmpleado.Dni;
                        Session["tipoUsuario"] = tipoUsuario;
                    }
                    else if (tipoUsuario == "Moderador")
                    {
                        Session["usuario"] = enEmpleado.Dni;
                        Session["tipoUsuario"] = tipoUsuario;
                    }
                }
                else
                {
                    MyMessageBoxInfo.Show(MyMessageBox.MessageType.Error, "Usuario o contraseña incorrecta", "Error", 125, 300);
                }

                if (ok)
                {
                    string nombreApellido = enSocio.ObtenerNombreSocio(dniUsuario);
                    lbWelcome.Text = "Bienvenido " + nombreApellido + "!";
                    lbWelcome.ForeColor = System.Drawing.Color.Black;
                    lbWelcome.Visible = true;
                }
            }
            catch (Exception ex)
            {
                MyMessageBoxInfo.Show(MyMessageBox.MessageType.Error, ex.ToString(), "Error", 125, 300);                
            }
        }

        protected void ibtPerfil_Click(object sender, ImageClickEventArgs e)
        {
            if (Session["Usuario"] != null)
            {
                string typeUser = (string)Session["tipoUsuario"];

                if (typeUser == "Socio")
                {
                    //Response.Redirect("Perfil.aspx?tipo=Socio"); //es lo que deberia hacerse
                    Response.Redirect("Socio.aspx");
                }
                else if (typeUser == "Moderador")
                {
                    //Response.Redirect("Perfil.aspx?tipo=Moderador");
                }
                else if (typeUser == "AdministradorWeb")
                {
                    //Response.Redirect("Perfil.aspx?tipo=AdministradorWeb");
                }
            }
        }

        protected void lbtPerfil_Click(object sender, EventArgs e)
        {
            if (Session["Usuario"] != null)
            {
                string typeUser = (string)Session["tipoUsuario"];

                if (typeUser == "Socio")
                {
                    //Response.Redirect("Perfil.aspx?tipo=Socio"); //es lo que deberia hacerse
                    Response.Redirect("Socio.aspx");
                }
                else if (typeUser == "Moderador")
                {
                    //Response.Redirect("Perfil.aspx?tipo=Moderador");
                }
                else if (typeUser == "AdministradorWeb")
                {
                    //Response.Redirect("Perfil.aspx?tipo=AdministradorWeb");
                }
            }
        }

        protected void ibtEditarPerfil_Click(object sender, ImageClickEventArgs e)
        {
            if (Session["Usuario"] != null)
            {
                string typeUser = (string)Session["tipoUsuario"];

                if (typeUser == "Socio")
                {
                    //Response.Redirect("EditarPerfil.aspx?tipo=Socio"); // es lo que deberia hacerse
                    Response.Redirect("EditarSocio.aspx");
                }
                else if (typeUser == "Moderador")
                {
                    //Response.Redirect("EditarPerfil.aspx?tipo=Moderador");
                }
                else if (typeUser == "AdministradorWeb")
                {
                    //Response.Redirect("EditarPerfil.aspx?tipo=Moderador");
                }
            }
        }

        protected void lbtEditarPerfil_Click(object sender, EventArgs e)
        {
            if (Session["Usuario"] != null)
            {
                string typeUser = (string)Session["tipoUsuario"];

                if (typeUser == "Socio")
                {
                    //Response.Redirect("EditarPerfil.aspx?tipo=Socio"); // es lo que deberia hacerse
                    Response.Redirect("EditarSocio.aspx");
                }
                else if (typeUser == "Moderador")
                {
                    //Response.Redirect("EditarPerfil.aspx?tipo=Moderador");
                }
                else if (typeUser == "AdministradorWeb")
                {
                    //Response.Redirect("EditarPerfil.aspx?tipo=Moderador");
                }
            }
        }

        protected void ibtCrearNoticia_Click(object sender, ImageClickEventArgs e)
        {
            if (Session["Usuario"] != null)
            {
                string typeUser = (string)Session["tipoUsuario"];

                if (typeUser == "AdministradorWeb")
                {
                    Response.Redirect("NuevaNoticia.aspx");
                }
            }
        }

        protected void lbtCrearNoticia_Click(object sender, EventArgs e)
        {
            if (Session["Usuario"] != null)
            {
                string typeUser = (string)Session["tipoUsuario"];

                if (typeUser == "AdministradorWeb")
                {
                    Response.Redirect("NuevaNoticia.aspx");
                }
            }
        }

        protected void ibtComentarios_Click(object sender, ImageClickEventArgs e)
        {
            if (Session["Usuario"] != null)
            {
                string typeUser = (string)Session["tipoUsuario"];

                if (typeUser == "Moderador")
                {
                    //Response.Redirect("Comentarios.aspx");
                }
            }
        }

        protected void lbtComentario_Click(object sender, EventArgs e)
        {
            if (Session["Usuario"] != null)
            {
                string typeUser = (string)Session["tipoUsuario"];

                if (typeUser == "Moderador")
                {
                    //Response.Redirect("Comentarios.aspx");
                }
            }
        }

        protected void ibtCerrarSesion_Click(object sender, ImageClickEventArgs e)
        {
            if (Session["Usuario"] != null)
            {
                Session.Clear();
                
                if (Request.Cookies["userID"] != null)
                {
                    BorrarCookie();
                }
                lbWelcome.Visible = false;
                pLogin.Visible = true;
                ibtUsuarioLogado.Visible = false;
                pUsuarioLogado.Visible = false;
            }
        }

        protected void lbtCerrarSesion_Click(object sender, EventArgs e)
        {
            if (Session["Usuario"] != null)
            {
                Session.Clear();
                
                if (Request.Cookies["userID"] != null)
                {
                    BorrarCookie();
                }
                lbWelcome.Visible = false;
                pLogin.Visible = true;
                ibtUsuarioLogado.Visible = false;
                pUsuarioLogado.Visible = false;
            }
        }

        public void CrearCookie()
        {
            HttpCookie userCookie = null;
            userCookie = Request.Cookies["userID"];

            if (userCookie == null)
            {
                userCookie = new HttpCookie("userID", tbUsuario.Text);
                userCookie.Expires = DateTime.Now.AddMonths(1);
                Response.Cookies.Add(userCookie);
            }
        }

        public void BorrarCookie()
        {
            if (Request.Cookies["userID"] != null)
            {
                HttpCookie myCookie = new HttpCookie("userID");
                myCookie.Expires = DateTime.Now.AddDays(-1d);
                Response.Cookies.Add(myCookie);
                Request.Cookies.Remove("userId");
            }
        }

        /*****************************************Funciones Ruben**************************************/
        public void ActualizarCarro()
        {
            int num = 0;
            CarroSocio carroSocio = new CarroSocio();

            string dni = "";

            if(Session["usuario"] != null)
                dni = Session["usuario"].ToString();

            try
            {
                if (Session["numeroJuegos"] != null)
                    num = (int)(Session["numeroJuegos"]);

                DataSet carro = new DataSet();
                carro = carroSocio.Juegos(dni);

                if(num != 0)
                    AddSesionABD();
                AddDataSetASesion(carro);                    

            }
            catch (Exception ex)
            {

            }
        }

        public void AddDataSetASesion(DataSet carro)
        {
            CarroSocio carroSocio = new CarroSocio();
            
            string dni = "";
            string juego = "";
            string plataforma = "";
            string cantidad = "";
            string tipo = "";

            int num = 0;

            try
            {
                dni = Session["usuario"].ToString();                
                
                foreach (DataRow fila in carro.Tables[0].Rows)
                {
                    juego = fila[0].ToString();
                    plataforma = fila[1].ToString();
                    cantidad = fila[2].ToString();
                    tipo = fila[3].ToString();
                    int numeroCopias = 0;

                    numeroCopias = NumeroDeCopias(juego, plataforma, tipo);

                    if (numeroCopias < int.Parse(cantidad))
                    {
                        cantidad = numeroCopias.ToString();
                    }

                    if (!JuegoAñadido(juego, plataforma, cantidad, tipo))                                    //COMPRUEBA SI EL JUEGO NO ESTÁ YA EN EL CARRITO DE LA COMPRA
                    {                                                       //SI NO ESTA AÑADIDO LO AÑADE
                        if (Session["numeroJuegos"] != null)
                            num = (int)(Session["numeroJuegos"]);

                        Session["juego" + (num + 1)] = juego;
                        Session["plataforma" + (num + 1)] = plataforma;
                        Session["cantidad" + (num + 1)] = cantidad;
                        Session["tipo" + (num + 1)] = tipo;

                        Session["numeroJuegos"] = num + 1;
                    }
                    else
                    {
                        AñadirCopias(juego, plataforma, cantidad, tipo);
                    }
                    
                }
            }
            catch (Exception)
            {
                
                throw;
            }
        }

        private bool JuegoAñadido(string juego, string plataforma, string cantidad, string tipo)
        {
            bool ok = false;
            int num = 0;

            try
            {
                if (Session["numeroJuegos"] != null)
                    num = (int)(Session["numeroJuegos"]);

                for (int i = 1; i <= num && !ok; i++)
                {
                    if ((Session["juego" + i.ToString()]).ToString() == juego && (Session["plataforma" + i.ToString()]).ToString() == plataforma && (Session["tipo" + i.ToString()]).ToString() == tipo)
                    {
                        ok = true;
                    }
                }
            }
            catch (Exception)
            {

            }

            return ok;
        }

        private bool AñadirCopias(string juego, string plataforma, string cantidad, string tipo)
        {
            bool ok = false;
            int num = 0;
            int numeroCopias = 0;
            CopiaFisica copiaFisica = new CopiaFisica();

            try
            {
                if (Session["numeroJuegos"] != null)
                    num = (int)(Session["numeroJuegos"]);

                for (int i = 1; i <= num && !ok; i++)
                {
                    if ((Session["juego" + i.ToString()]).ToString() == juego && (Session["plataforma" + i.ToString()]).ToString() == plataforma && (Session["tipo" + i.ToString()]).ToString() == tipo)
                    {
                        if (tipo == "nuevo")                                             //SI EL JUEGO ES NUEVO
                        {
                            numeroCopias = copiaFisica.NumeroCopiasFisicasNuevas(juego, plataforma);

                        }
                        else if (tipo == "segunda")                                     //SI EL JUEGO ES DE SEGUNDA MANO
                        {
                            numeroCopias = copiaFisica.NumeroCopiasFisicasSegundaMano(juego, plataforma);
                        }

                        if (int.Parse(Session["cantidad" + i.ToString()].ToString()) + int.Parse(cantidad) > numeroCopias)
                        {
                            Session["cantidad" + i.ToString()] = numeroCopias.ToString();
                        }
                        else
                        {
                            Session["cantidad" + i.ToString()] = int.Parse(Session["cantidad" + i.ToString()].ToString()) + int.Parse(cantidad);
                        }
                        ok = true;
                    }
                }
            }
            catch (Exception)
            {

            }

            return ok;
        }

        public void AddSesionABD()
        {
            int num = 0;
            string juego = "";
            string plataforma = "";
            int cantidad = 0;
            string tipo = "";
            int numJuegos = 0;
            string dni = "";
            int numeroCopias = 0;

            CopiaFisica copiaFisica = new CopiaFisica();

            CarroSocio carroSocio = new CarroSocio();

            try
            {
                if (Session["numeroJuegos"] != null)
                    num = (int)(Session["numeroJuegos"]);

                dni = Session["Usuario"].ToString();

                for (int i = 1; i <= num; i++)
                {
                    juego = Session["juego" + i.ToString()].ToString();
                    plataforma = Session["plataforma" + i.ToString()].ToString();
                    cantidad = int.Parse(Session["cantidad" + i.ToString()].ToString());
                    tipo = Session["tipo" + i.ToString()].ToString();                            

                    numJuegos = carroSocio.CantidadJuego(dni, juego, plataforma, tipo);

                    if (numJuegos == 0)
                    {
                        carroSocio.InsertarJuego(dni, juego, plataforma, tipo, cantidad.ToString());
                    }
                    else
                    {
                        if (tipo == "nuevo")                                             //SI EL JUEGO ES NUEVO
                        {
                            numeroCopias = copiaFisica.NumeroCopiasFisicasNuevas(juego, plataforma);

                        }
                        else if (tipo == "segunda")                                     //SI EL JUEGO ES DE SEGUNDA MANO
                        {
                            numeroCopias = copiaFisica.NumeroCopiasFisicasSegundaMano(juego, plataforma);
                        }

                        if ((cantidad + numJuegos) > numeroCopias)
                        {
                            carroSocio.ModificarCantidad(dni, juego, plataforma, tipo, numeroCopias.ToString());
                        }
                        else
                        {
                            carroSocio.ModificarCantidad(dni, juego, plataforma, tipo, (cantidad + numJuegos).ToString());
                        }
                    }

                }

            }
            catch (Exception)
            {
                
                throw;
            }
        }

        private int NumeroDeCopias(string nombre, string plataforma, string tipo)
        {
            int numeroCopias = 0;
            CopiaFisica copiaFisica = new CopiaFisica();

            try
            {
                if (tipo == "nuevo")                                             //SI EL JUEGO ES NUEVO
                    numeroCopias = copiaFisica.NumeroCopiasFisicasNuevas(nombre, plataforma);

                else if (tipo == "segunda")                                     //SI EL JUEGO ES DE SEGUNDA MANO
                    numeroCopias = copiaFisica.NumeroCopiasFisicasSegundaMano(nombre, plataforma);
            }
            catch (Exception)
            {

            }
            return numeroCopias;
        }

        protected void CargarCarro()
        {
            int num = 0;
            double subtotal = 0;
            double total = 0;

            try
            {
                Table TCarro = new Table();

                TCarro.ID = "TCarro";
                TCarro.Height = System.Web.UI.WebControls.Unit.Parse("100%");
                TCarro.Width = System.Web.UI.WebControls.Unit.Parse("100%");
                TCarro.CssClass = "miniCarro";

                TableRow filaNombres = new TableRow();
                filaNombres.CssClass = "FilaNombres";

                TableCell celdaJuego = new TableCell();
                celdaJuego.Width = System.Web.UI.WebControls.Unit.Parse("80%");
                celdaJuego.Text = "Juego";
                filaNombres.Cells.Add(celdaJuego);

                TableCell celdaPrecio = new TableCell();
                celdaPrecio.Width = System.Web.UI.WebControls.Unit.Parse("20%");
                celdaPrecio.Text = "Precio";
                filaNombres.Cells.Add(celdaPrecio);

                TCarro.Rows.Add(filaNombres);
                PanelCarrito.Controls.Add(TCarro);

                HyperLink linkCarro = new HyperLink();
                linkCarro.Text = "Ver Carro";
                linkCarro.NavigateUrl = "~/Carro1.aspx";

                PanelCarrito.Controls.Add(linkCarro);



                if (Session["numeroJuegos"] != null)
                    num = (int)(Session["numeroJuegos"]);

                for (int i = 1; i <= num; i++)
                {
                    string nombre = Session["juego" + i.ToString()].ToString();
                    string plataforma = Session["plataforma" + i.ToString()].ToString();
                    string cantidad = Session["cantidad" + i.ToString()].ToString();
                    string tipo = Session["tipo" + i.ToString()].ToString();
                    Promocion promo = new Promocion();
                    Juego juego = new Juego();

                    string[] promocion;
                    string precio;

                    //Crea la nueva Fila
                    TableRow fila = new TableRow();
                    TCarro.Rows.Add(fila);


                    //COLUMNA PRODUCTO
                    //Crea la celda del Producto
                    TableCell celdaProducto = new TableCell();
                    fila.Cells.Add(celdaProducto);
                    celdaProducto.Width = System.Web.UI.WebControls.Unit.Parse("75%");
                    celdaPrecio.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Left;

                    HyperLink NombreJuego = new HyperLink();
                    NombreJuego.Text = cantidad + "X " + nombre + " (" + plataforma + ')';                    
                    NombreJuego.ID = "Nombre" + i.ToString();
                    NombreJuego.NavigateUrl = "Juego.aspx?juego=" + Server.UrlEncode(nombre) + "&plataforma=" + Server.UrlEncode(plataforma);
                    celdaProducto.Controls.Add(NombreJuego);

                    if (tipo == "segunda")
                    {
                        Label segundaMano = new Label();
                        segundaMano.Text = " (Segunda Mano)";
                        celdaProducto.Controls.Add(segundaMano);
                    }

                    //COLUMNA Total
                    //Crea la celda del Total
                    TableCell celdaSubTotal = new TableCell();
                    fila.Cells.Add(celdaSubTotal);
                    celdaSubTotal.Width = System.Web.UI.WebControls.Unit.Parse("25%");
                    celdaSubTotal.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center;

                    precio = juego.GetPrecio(nombre, plataforma, tipo);
                    promocion = promo.GetTipoPromocion(nombre, plataforma);

                    if (promocion[0] == "2X1")
                    {
                        int cantidadRed = int.Parse(cantidad) / 2;
                        if (double.Parse(cantidad) % 2 > 0)
                            cantidadRed++;
                        subtotal = cantidadRed * double.Parse(precio);
                    }
                    else if (promocion[0] == "Descuento en €")
                    {
                        double precioConPromo = 0;
                        if (double.Parse(promocion[1]) < double.Parse(precio))
                            precioConPromo = double.Parse(precio) - double.Parse(promocion[1]);

                        subtotal = (precioConPromo * int.Parse(cantidad));
                    }
                    else if (promocion[0] == "Descuento en %")
                    {
                        double precioConPromo = 0;
                        precioConPromo = double.Parse(precio) * (1 - (double.Parse(promocion[1]) / 100));
                        subtotal = (precioConPromo * int.Parse(cantidad));

                    }
                    else
                    {
                        subtotal = (double.Parse(precio) * int.Parse(cantidad));
                    }
                    //subtotal = double.Parse(juego.GetPrecio(nombre, plataforma, tipo).ToString()) * double.Parse(cantidad);
                    total += subtotal;

                    celdaSubTotal.Text = subtotal.ToString() + " €";
                    celdaSubTotal.ID = "SubTotal" + i.ToString();
                }

                if (num == 0)
                {
                    //Crea la nueva Fila
                    TableRow fila = new TableRow();
                    TCarro.Rows.Add(fila);

                    TableCell celda = new TableCell();
                    fila.Cells.Add(celda);
                    celda.Text = "El carrito está vacio";
                }

                //Crea la nueva Fila para el total
                TableRow filaTotal = new TableRow();
                TCarro.Rows.Add(filaTotal);

                TableCell celdaTotalTexto = new TableCell();
                filaTotal.Cells.Add(celdaTotalTexto);
                celdaTotalTexto.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Right;
                celdaTotalTexto.Text = "Total";

                TableCell celdaTotal = new TableCell();
                filaTotal.Cells.Add(celdaTotal);
                celdaTotal.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Center;
                celdaTotal.Text = total.ToString() + " €";
            }
            catch (Exception)
            {

            }
        }
        /*****************************************Fin Funciones Ruben**********************************/

        /***************************************** Funciones Marcos **********************************/

        protected void ibBusqueda_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                Response.Redirect("~/ResultadoBusqueda.aspx?juego=" + Server.HtmlEncode(tbBusqueda.Text));
            }
            catch
            {
                MyMessageBoxInfo.Show(MyMessageBox.MessageType.Error, "Ha ocurrido un error. Disculpen las molestias", "ERROR", 200, 300);
            }
        }

        /***************************************** Fin Funciones Marcos **********************************/
    }
}
